<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script>
        var arr = [1, 1, 2, 3, 3, 2, 1];

        Array.prototype.unique = function () {
            var ret = [];
            var o = {};
            var len = this.length;
            for (var i = 0; i < len; i++) {
                var v = this[i];
                if (!o[v]) {
                    ret.push(v);
                    o[v] = 1;
                }
            }
            return ret;
        };
        alert(arr.unique());


        Array.prototype.unique2 = function(){

            var n = [this[0]]; //结果数组

            for (var i = 1; i < this.length; i++) //从第二项开始遍历

            {

                //如果当前数组的第i项在当前数组中第一次出现的位置不是i，

                //那么表示第i项是重复的，忽略掉。否则存入结果数组

                if (this.indexOf(this[i]) == i) n.push(this[i]);

            }

            return n;

        }

        Array.prototype.unique3 = function() {

            var n = []; //一个新的临时数组

            for (var i = 0; i < this.length; i++) //遍历当前数组

            {

                //如果当前数组的第i已经保存进了临时数组，那么跳过，

                //否则把当前项push到临时数组里面

                if (n.indexOf(this[i]) == -1) n.push(this[i]);

            }

            return n;

        }
    </script>
</head>
<body>

</body>
</html>